package com.advanced.test01;

import java.util.Arrays;
import java.util.Scanner;

public class ZuoYe01 {

	public static void main(String[] args) {
		// 1:输入两个字符串，查找第一个字符串在第二个字符串中出现的次数
		// 比如输入dog和 This is a good dog.
		// 则出现了一次。
		// String str1 = "o";
		// String str2 = "This is a good dog";
		String str1 = "abc";
		String str2 = "ab1ca1bcab1cabc1ab1c";
		int flag = 0;
		for (int i = 0; i < str2.length(); i++) {
			int num = str2.indexOf(str1);
			if (num >= 0) {
				flag++;
				str2 = str2.substring(num + 1);
			}
		}
		System.out.println("第一个字符串在第二个字符串中出现的次数:" + flag);

//		2:假定作业的命名要求是必须是压缩格式，比如zip或者rar,输入作业的名称，判断是否合适。
		Scanner input = new Scanner(System.in);
		System.out.println("作业的命名要求是必须是压缩格式，比如.zip或者.rar,输入作业的名称：");
		String str3 = input.next();
		if (str3.endsWith("zip") || str3.endsWith("rar")) {
			System.out.println("作业命名正确。");
		} else {
			System.out.println("作业命名错误！");
		}

//		3:假定作业的命名要求是中文姓名+压缩文件名，可以是zip或者rar,比如张洋.rar或者张洋.zip都是对的，其他，比如zhangyang.rar或zhangyang.java都是错误的。
//		输入作业名称，判断是否正确。
		System.out.println("作业的命名要求是中文姓名+压缩文件名，比如张洋.rar或者张洋.zip,输入作业的名称：");
		String str4 = input.next();
		if ((str4.endsWith("zip") || str4.endsWith("rar")) && !((str4.length() == str4.getBytes().length))) {
			System.out.println("作业命名正确。");
		} else {
			System.out.println("作业命名错误！");
		}
//		4：传闻StringBuilder比StringBuffer快,
//		比较一下，输出你的比较结果（拼接10万个相同的字符串，比较时间）。
		String str5 = new String();
		StringBuilder str6 = new StringBuilder();
		StringBuffer str7 = new StringBuffer();
		// String
		long time5Start = System.currentTimeMillis();
		for (int i = 0; i < 100000; i++) {
			str5 += i;
		}
		long time5End = System.currentTimeMillis();
		System.out.println("String拼接10万字符时间:" + (time5End - time5Start));
		// StringBuilder
		long time6Start = System.currentTimeMillis();
		for (int i = 0; i < 100000; i++) {
			str6.append(i);
		}
		long time6End = System.currentTimeMillis();
		System.out.println("StringBuilder拼接10万字符时间:" + (time6End - time6Start));
		// StringBuffer
		long time7Start = System.currentTimeMillis();
		for (int i = 0; i < 100000; i++) {
			str7.append(i);
		}
		long time7End = System.currentTimeMillis();
		System.out.println("StringBuffer拼接10万字符时间:" + (time7End - time7Start));

//		5：定义一个字符串，输出他对应的字节和字符。
		String str9 = "StringBuilder速度快，但是线程不安全，StringBuffer速度慢，但是线程安全。";
		System.out.println(str9);
		System.out.println(Arrays.toString(str9.getBytes()));
		System.out.println(Arrays.toString(str9.toCharArray()));

//		6：baidu StringBuilder比StringBuffer的区别。
		/**
		 * StringBuilder速度快，但是线程不安全 //StringBuffer速度慢，但是线程安全 1、StringBuffer 与
		 * StringBuilder 中的方法和功能完全是等度价的
		 * 
		 * 2、只是StringBuffer 中的方法大都采用了 synchronized 关键知字进行修饰，因此是线程安全道的，而 StringBuilder
		 * 没有这个修饰，可以被认为是线程不安全的。
		 * 
		 * 3、在单线程程序下，StringBuilder效率更快，因为它不需要加锁，不具备回多线程安全而StringBuffer则每次都答需要判断锁，效率相对更低。
		 */
	}

}
